<?php
declare(strict_types=1);
namespace app\core\Proxy;
use app\core\Container\Reflection\ReflectionContainer;
use ReflectionClass;
class Main{
    public static $scanDirs=[
        'controller'=>[
            'path'=>APP.'/app/controller',
            'prefix'=>'\\app\\controller\\',
            'methods'=>[]
        ],
        'business'=>[
            'path'=> APP.'/app/business',
            'prefix'=> '\\app\\business\\',
            'methods'=>[]
        ],
    ];
    public static function build(){
      
    //    $class= 'app\\controller\\'.preg_replace("/.php/",'',array_values(array_diff(scandir(static::$scanDirs['controller']), array('.', '..'))))[9];
    
    //     $d=(new $class())->test();
    //     print_r($d);
    //    print_r(self::$scanDirs);
            // $c=(new \app\controller\Users())->test();
            // print_r($c);
            
        foreach(self::$scanDirs as $k=>$v){
            
            $classList=preg_replace("/.php/",'',array_values(array_diff(scandir($v['path']), array('.', '..'))));
            $fileList='';
            foreach($classList as $clv){
                // print_r(."\r\n");
                $fileList.=$v['path'].'/'.$clv.'.php ';
            //     // $
            //     //  self::$scanDirs[$k]['methods'][]=$v['prefix'].$clv;
            }
            // $fileList=trim($fileList).' '.APP.'/app/cache/app/controller';
            // print_r($fileList);
            // $exec=exec('cp '.$fileList ,$output,$return_var);

            // echo '$exec='.$exec."\r\n";
            // echo "\$output:";
            // print_r($output);
            // echo "\r\n";
            // echo "\$return_var:";
            // print_r($output);
           
            // print_r(self::$scanDirs);
            break;
        }

        // print_r(self::$scanDirs);
    }
    // private $nameSpace='';
    // private $className='';
    // public function __construct(){
    //     $table = explode("\\",strtolower(preg_replace('/(?<=[a-z])(?=[A-Z])/', '\\', get_class())));
    //     $reversedArray=array_reverse($table);
    //     $table=array_shift($reversedArray);
    //     $shiftedValue=array_shift($reversedArray);
    //     $this->className=$shiftedValue;
    //     $this->nameSpace=implode("\\",array_reverse($reversedArray));
     
    // }
    // public function __call($name, $arguments)
    // { 
    //     $nameSpace=$this->nameSpace;
    //     $className=$this->className;
    //     $class=$nameSpace.'\\'.$className;
    //     $reflectedMethod= (new ReflectionMethod($class,$name));
       
       
    //     $attributes=$reflectedMethod->getAttributes();
    //     foreach($attributes as $k=>$v){
    //         $reflectedAttributionClass=(new ReflectionClass($v->getName()));
    //         $reflectedAttributionClass->newInstance();
    //     }
    //     // 参考门户模式，生成代理类
    //     // $getDocComment=$reflectedMethod->getDocComment();
    //     // preg_match_all("/@param\s[a-z]{1,}(\|null)?\s\\$[a-z]{0,}/",$getDocComment,$m);
    //     // preg_match("/@return\s[a-z]{1,}/",$getDocComment,$returnType);
    //     // $params=array_shift($m);
    //     // print_r($params);
    //     // print_r($returnType);
    //     // print_r($getDocComment);
    //   return $reflectedMethod->invokeArgs(new $class,$arguments);
     
    // }
}

